var express = require('express');
var router = express.Router();
/* GET home page. */
router.post('/', function (req, res, next) {
    // cart添加和减少
    let { username, good, num } = req.body
    // num必为正，该接口用于除购物车以外的地方添加商品
    if (!username || !good||!num) {
        res.send({ err: 1, msg: '用户名，商品信息和数量为必传参数' })
        return
    }
    num = parseInt(num)
    let goods = JSON.parse(good)//商品入库信息
    // 开库
    req.mgdb.open({ collectionName: 'cart' }).then(({ collection, client }) => {
        collection.find({ username: username }).toArray((err, result) => {
            if (err) {
                res.send({ err: 1, msg: '操作集合失败' });
            } else {
                // 查看库中是否有该用户的购物车信息
                if (result.length > 0) {
                    // 有
                    let index;
                    // 遍历用户购物车里的商品，判断商品是否已经存在在购物车里
                    let flag = result[0].goods.some((val, idx) => {
                        index = idx;
                        return val.proid === goods.proid
                    })
                    if (flag) {
                            //修改该条商品的数量
                            result[0].goods[index].num = result[0].goods[index].num + num;
                            result[0].goods[index].time = Date.now()//更新时间
                            goods = result[0].goods
                        collection.updateOne({ username: username }, { $set: { goods } }, { upsert: false, projection: false }, (err, result) => {
                            if (err) {
                                res.send({ err: 1, msg: '操作集合失败' });
                            } else {
                                res.send({ err: 0, msg: '修改数量成功', data: result.result });
                            }
                            client.close();
                        })
                    } else {
                        // 不存在，新加一条到用户的购物车商品信息内
                        goods.num = num
                        result[0].goods.push(goods)
                        goods = result[0].goods
                        collection.updateOne({ username: username }, { $set: { goods } }, { upsert: false, projection: false }, (err, result) => {
                            if (err) {
                                res.send({ err: 1, msg: '操作集合失败' });
                            } else {
                                res.send({ err: 0, msg: '加入购物车成功', data: result.result })
                            }
                            client.close();
                        })
                    }
                } else {
                    // 库中没有，新增一条
                    goods.num = num;
                    goods = [goods];
                    collection.insertOne({ username, goods }, (err, result) => {
                        if (err) {
                            res.send({ err: 1, msg: '操作集合失败' + err });
                        } else {
                            res.send({ err: 0, msg: '加入购物车成功,您的购物车有了第一件商品', data: [result.result, result.insertedId] });
                        }
                        client.close();
                    })
                }
            }
        })
    }).catch(
        e => res.send(e)
    )
})
module.exports = router;